﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RN
{
    public class MailServer
    {
        private List<Message> listamensajes = new List<Message>();
        private String nombreservidor;

        public MailServer(String nombre)
        {
            nombreservidor = nombre;
        }

        public MailServer()
        {

        }

        public String Nombreservidor
        {
            get { return nombreservidor; }
            set { nombreservidor = value; }
        }

        public int getMessagesWaiting(String usuario)
        {
            int contador = 0;
            foreach (Message mensaje in listamensajes)
            {
                if(mensaje.To.Equals(usuario))
                {
                    contador++;
                }
            }
            return contador;
        }

        public Message getNextMessage(String usuario)
        {
            foreach (Message mensaje in listamensajes)
            {
                if (mensaje.To.Equals(usuario))
                {
                    listamensajes.Remove(mensaje);
                    return mensaje;
                }
            }
            return null;
        }

        public void post(Message item)
        {
            listamensajes.Add(item);
        }

        public List<Message> getMensajes(String usuario)
        {
            List<Message> list = new List<Message>();
            foreach(Message m in listamensajes)
            {
                if (m.To == usuario)
                {
                    list.Add(m);
                }
            }

            return list;
        }

        public Message readMessage(String usuario, String Subject)
        {
            foreach (Message m in listamensajes)
            {
                if (m.To == usuario && m.Subject == Subject)
                {
                    return m;
                }
            }

            return null;
        }

        public Message readMessage(string from, string to, string Subject)
        {
            foreach (Message m in listamensajes)
            {
                if (m.From==from && m.To == to && m.Subject == Subject)
                {
                    m.IsRead = true;
                    return m;
                }
            }

            return null;
        }
    }
}
